#include <iostream>
using namespace std;
#include <stdio.h>
#include <stdlib.h>
//class A
//{
//public:
//	A(int a = 0)
//		: _a(a)
//	{
//		cout << "A():" << this << endl;
//	}
//
//	~A()
//	{
//		cout << "~A():" << this << endl;
//	}
//private:
//	int _a;
//};
//
//class Stack
//{
//public:
//	Stack()
//	{
//		_a = (int*)malloc(sizeof(int) * 4);
//		_top = 0;
//		_capacity = 4;
//	}
// 
//	~Stack()
//	{
//		free(_a);
//		_top = _capacity = 0;
//	}
//private:
//	int* _a;
//	int _top;
//	int _capacity;
//};
//
//int main()
//{
//  //int* p1=(int *)operator new(10*4);
//  A* ptr1=new A;//operator new+1次构造
//  A* ptr2=newA[15];//operator new[]  +10构造
//
//  delete ptr1;//1次析构
//  delete  []  ptr2;//10次析构   内置类型不需要调用析构函数
//
//  
//  Stack* pst=new Stack;
//  delete  pst;
//
//  int *p=new int[10];
//
//  return 0;
//}


//int main()
//{
//  A* ptr1=new A;//operator new+1次构造
//  A* ptr2=new A[15];//operator new[]  +10构造
//
//    return 0;
//}
//

//int main()
//{
  //A aa1;
  //aa1.~A();
  //Stack st;
  //st.~Stack();
//  return  0;
//}


//模板
//函数模板
//template<typename T>
// 

template<class T>
void Swap(T& x,T& y)
{
  T tmp=x;
  x=y;
  y=tmp;
}
int main()
{

  int a=1;int b=2;
  Swap(a,b);

  double d1=1.1;
  double d2=2.2;
Swap(d1,d2);
  return 0;
}

